home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / octa209s.zip / octave-2.09 / doc / interpreter / nonlin.tex < prev    next >
Text File  |  1997-08-13  |  3KB  |  104 lines

  1. @c Copyright (C) 1996, 1997 John W. Eaton
  2. @c This is part of the Octave manual.
  3. @c For copying conditions, see the file gpl.tex.
  4.  
  5. @node Nonlinear Equations, Quadrature, Linear Algebra, Top
  6. @chapter Nonlinear Equations
  7. @cindex nonlinear equations
  8. @cindex equations, nonlinear
  9.  
  10. Octave can solve sets of nonlinear equations of the form
  11. @iftex
  12. @tex
  13. $$
  14.  f (x) = 0
  15. $$
  16. @end tex
  17. @end iftex
  18. @ifinfo
  19.  
  20. @example
  21. F (x) = 0
  22. @end example
  23. @end ifinfo
  24.  
  25. @noindent
  26. using the function @code{fsolve}, which is based on the @sc{Minpack}
  27. subroutine @code{hybrd}.
  28.  
  29. @deftypefn {Loadable Function} {[@var{x}, @var{info}] =} fsolve (@var{fcn}, @var{x0})
  30. Given @var{fcn}, the name of a function of the form @code{f (@var{x})}
  31. and an initial starting point @var{x0}, @code{fsolve} solves the set of
  32. equations such that @code{f(@var{x}) == 0}.
  33. @end deftypefn
  34.  
  35. @deftypefn {Loadable Function} {} fsolve_options (@var{opt}, @var{val})
  36. When called with two arguments, this function allows you set options
  37. parameters for the function @code{fsolve}.  Given one argument,
  38. @code{fsolve_options} returns the value of the corresponding option.  If
  39. no arguments are supplied, the names of all the available options and
  40. their current values are displayed.
  41. @end deftypefn
  42.  
  43. Here is a complete example.  To solve the set of equations
  44. @iftex
  45. @tex
  46. $$
  47.  \eqalign{-2x^2 + 3xy + 4\sin(y) - 6 &= 0\cr
  48.            3x^2 - 2xy^2 + 3\cos(x) + 4 &= 0}
  49. $$
  50. @end tex
  51. @end iftex
  52. @ifinfo
  53.  
  54. @example
  55. -2x^2 + 3xy   + 4 sin(y) = 6
  56.  3x^2 - 2xy^2 + 3 cos(x) = -4
  57. @end example
  58. @end ifinfo
  59.  
  60. @noindent
  61. you first need to write a function to compute the value of the given
  62. function.  For example:
  63.  
  64. @example
  65. function y = f (x)
  66.   y(1) = -2*x(1)^2 + 3*x(1)*x(2)   + 4*sin(x(2)) - 6;
  67.   y(2) =  3*x(1)^2 - 2*x(1)*x(2)^2 + 3*cos(x(1)) + 4;
  68. endfunction
  69. @end example
  70.  
  71. Then, call @code{fsolve} with a specified initial condition to find the
  72. roots of the system of equations.  For example, given the function
  73. @code{f} defined above,
  74.  
  75. @example
  76. [x, info] = fsolve ("f", [1; 2])
  77. @end example
  78.  
  79. @noindent
  80. results in the solution
  81.  
  82. @example
  83. x =
  84.  
  85.   0.57983
  86.   2.54621
  87.  
  88. info = 1
  89. @end example
  90.  
  91. A value of @code{info = 1} indicates that the solution has converged.
  92.  
  93. The function @code{perror} may be used to print English messages
  94. corresponding to the numeric error codes.  For example,
  95.  
  96. @example
  97. @group
  98. perror ("fsolve", 1)
  99.      @print{} solution converged to requested tolerance
  100. @end group
  101. @end example
  102.  
  103.  
  104.